package com.polaris.live.resp.base

import com.polaris.live.common.network.ApiResponse

/**
 * 列表返回
 *
 * @author Created by lucas on 2023/10/16 17:42
 * @since 1.0.0
 */
data class ListResp<T>(
    /**
     * 是否有更多数据
     */
    val hasMore: Boolean,
    /**
     * 数据集合
     */
    val list: List<T>,
    /**
     * 当前页码
     */
    val pageNumber: Long,
    /**
     * 当前页面数量大小
     */
    val pageSize: Long,
    /**
     * 总size
     */
    val total: Long,
    /**
     * 总页数
     */
    val totalPage: Long
)

/**
 * 创建一个新的对象
 */
fun <T, R> ListResp<T>.new(newList: List<R>?): ListResp<R> {
    return ListResp(hasMore, newList ?: emptyList(), pageNumber, pageSize, total, totalPage)
}

/**
 * 创建一个新的对象
 */
fun <T, R> ApiResponse<ListResp<T>>.new(newList: List<R>?): ApiResponse<ListResp<R>> {
    return ApiResponse(code, timestamp, getResponseMsg(), ext, result?.new(newList))
}